﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace sy5_11
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Text = "男女生比例图"; // 设置窗体标题
            this.Size = new Size(300, 300); // 调整窗体大小适配饼图
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                // 1. 清空之前的绘制
                this.Refresh();

                // 2. 获取画布
                Graphics g = this.CreateGraphics();
                g.SmoothingMode = SmoothingMode.AntiAlias; // 抗锯齿

                // 3. 定义网格画刷（男生：白红条纹；女生：白蓝条纹）
                HatchBrush hb1 = new HatchBrush(HatchStyle.WideDownwardDiagonal, Color.White, Color.Red);
                HatchBrush hb2 = new HatchBrush(HatchStyle.WideUpwardDiagonal, Color.White, Color.Blue);

                // 4. 获取输入的男女生人数
                int boyNum = int.Parse(textBox1.Text);
                int girlNum = int.Parse(textBox2.Text);
                int total = boyNum + girlNum; // 总人数

                // 5. 计算男女生比例（用于转换为饼图角度）
                float boyRatio = (float)boyNum / total;
                float girlRatio = (float)girlNum / total;

                // 6. 定义饼图的外切矩形（左上角(20,20)，宽高150×150）
                Rectangle rect = new Rectangle(20, 20, 150, 150);

                // 7. 绘制男生扇形（角度=比例×360）
                g.FillPie(hb1, rect, 0, boyRatio * 360);
                // 绘制女生扇形（从男生扇形结束的角度开始）
                g.FillPie(hb2, rect, boyRatio * 360, girlRatio * 360);

                // 8. 计算男女生百分比（保留2位小数）
                float boyPercent = (float)Math.Round(boyRatio * 100, 2);
                float girlPercent = (float)Math.Round(girlRatio * 100, 2);

                // 9. 绘制图例和文字说明
                SolidBrush sb = new SolidBrush(Color.Black);
                Font f = new Font("宋体", 9, FontStyle.Bold);

                // 男生图例：15×15的小矩形
                Rectangle rect1 = new Rectangle(160, 160, 12, 12);
                g.FillRectangle(hb1, rect1);
                g.DrawString($"男生 {boyPercent}%", f, sb, rect1.X + 20, rect1.Y);

                // 女生图例：15×15的小矩形
                Rectangle rect2 = new Rectangle(160, 180, 12, 12);
                g.FillRectangle(hb2, rect2);
                g.DrawString($"女生 {girlPercent}%", f, sb, rect2.X + 20, rect2.Y);

                // 10. 释放资源
                hb1.Dispose();
                hb2.Dispose();
                sb.Dispose();
                f.Dispose();
                g.Dispose();
            }
            catch (Exception ex)
            {
                MessageBox.Show($"输入错误：{ex.Message}", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
    }
}
